/*
Copyright 2007 Julian Asamer

This file is part of Fractalicious.

    Fractalicious is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Fractalicious is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Fractalicious.  If not, see <http://www.gnu.org/licenses/>.
*/

//The Spiral fractal.

//This is a very simple fractal; I'll explain with it how to implement a new fractal.
//You basically just have to define the things which make up the fractal; you don't have to care about the calculation.
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>

@class DragablePoint;

@interface Spiral : NSObject 
{
	id delegate; //We'll send a message to the delegate if we want recalculation. 
				 //Normally, the deleage is FractalController.
	DragablePoint *p; //Define the draggable objects. You can, of course, use as many as you want, and even implement your own dragables.
}

-(id) init; //Do some initialisations.

//Those are the three things that define your fractal:
-(NSMutableArray *)getStartLines; //The lines, with which the calculation will start.
-(NSMutableArray *)getTransformers; //The transformes, the rule which says how to calculate.
-(NSMutableArray *)getDragables; //The draggables.


//Of course there need to be the methods to set the delegate.
-(id) delegate;
-(void) setDelegate:(id) delegate;

/* ============================= */
/* = More to come in Spiral.m! = */
/* ============================= */

@end